/**
 * yeahmobi.com Inc.
 * Copyright © 2014 YeahMobi | All Rights Reserved.
 */

package com.ndp.fb.rdb.api;

import com.ndp.fb.rdb.model.FbUser;
import com.ndp.fb.rdb.model.TokenAndLanguage;

import java.util.List;

/**
 * @author giser.yang
 * @Title: FbUserRdbService.java
 * @Copyright: Copyright © 2015
 * @Description:
 * @Company: yeahmobi
 * @Created on 下午1:39:42
 */

public interface FbUserRdbService {
    /**
     * 根据facebook用户ID获取facebook用户
     *
     * @param fbUserId
     * @return
     * @discription
     * @author giser.yang
     * 创建时间 2015年6月3日 下午1:51:29
     */
    FbUser getFbUserByFbUserId(Long fbUserId);

    /**
     * 根据fbuserid获取token
     * @param fbUserId
     * @return
     */
    String getTokenByFbUserId(Long fbUserId);

    /**
     * 根据FMP用户获取token
     * @param userId
     * @return
     */
    String getTokenByUserId(String  userId);

    /**
     * 根据FMP用户获取token和语言
     * @param userId
     * @return
     */
    TokenAndLanguage getTokenAndLanguageByUserId(String userId);

    /**
     * 根据bm获取token
     * @param bmId
     * @return
     */
    String getTokenByBmId(Long bmId);

    /**
     * 根据FMP用户获取facebook用户信息
     *
     * @param userId
     * @return
     * @discription
     * @author giser.yang
     * 创建时间 2015年6月3日 下午1:51:13
     */
    FbUser getFbUserByUserId(String userId);

    /**
     * 获取所有已关联的fbuser
     *
     * @return
     * @discription
     * @author giser.yang
     * 创建时间 2015年6月3日 下午2:41:17
     */
    List<FbUser> getAllFbUser();

    /**
     * 保存fbUser
     *
     * @param fbUser
     * @return
     * @discription
     * @author giser.yang
     * 创建时间 2015年6月5日 上午11:36:37
     */
    Long saveFbUser(FbUser fbUser);

    /**
     * 更新fbUser 不包括更新token
     *
     * @param fbUser
     * @return
     * @discription
     * @author giser.yang
     * 创建时间 2015年6月5日 上午11:36:37
     */
    Integer updateFbUser(FbUser fbUser);

    /**
     * 获取fbuser从redis缓存里面
     *
     * @param fbUserId
     * @return
     * @discription
     * @author giser.yang
     * 创建时间 2015年6月19日 下午1:26:34
     */
    FbUser getFbUserFromCache(Long fbUserId);



    /**
     * 根据 userid 得到token是否失效,
     * 0 没有失效 false
     * 1 失效 true
     *
     * @param userId
     * @return
     */
    Boolean getIsInvalidByUserId(String userId);


    /**
     * 检查 token是否失效
     *
     * @param accessToken
     * @return
     */
    Boolean getIsInvalidByAcessToken(String accessToken);

    int updateInValidByAcessToken(String accessToken, String isValid);

    /**
     * 清楚 redis 中的失效标识
     *
     * @param fbUser
     */
     void clearValidByFbUser(FbUser fbUser);

     void clearValidByFbAccessToken(String accessToken);

    /**
     * 删除fbuser
     * @param fbUserId
     */
     void deleteFbUser(Long fbUserId);
}
